#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "tx_api.h"
#include "ff.h" // FATFS 头文件

#define TEST_FILE "test.txt"
#define BUFFER_SIZE (1024 * 1024) // 1 MB

void test_sd_card_speed() {
    FIL file; // 文件对象
    char *buffer = malloc(BUFFER_SIZE); // 分配 1 MB 的缓冲区
    if (buffer == NULL) {
        printf("Memory allocation failed\n");
        return;
    }
    memset(buffer, 'A', BUFFER_SIZE); // 填充缓冲区

    // 测试写入速度
    DWORD start_time = tx_time_get(); // 获取开始时间
    if (f_open(&file, TEST_FILE, FA_CREATE_ALWAYS | FA_WRITE) == FR_OK) {
        UINT bytes_written;
        f_write(&file, buffer, BUFFER_SIZE, &bytes_written);
        f_close(&file);
    }
    DWORD end_time = tx_time_get(); // 获取结束时间

    // 计算写入速度
    ULONG write_time = end_time - start_time;
    printf("Write Speed: %lu KB/s\n", (BUFFER_SIZE / 1024) / write_time);

    // 测试读取速度
    start_time = tx_time_get(); // 获取开始时间
    if (f_open(&file, TEST_FILE, FA_READ) == FR_OK) {
        UINT bytes_read;
        f_read(&file, buffer, BUFFER_SIZE, &bytes_read);
        f_close(&file);
    }
    end_time = tx_time_get(); // 获取结束时间

    // 计算读取速度
    ULONG read_time = end_time - start_time;
    printf("Read Speed: %lu KB/s\n", (BUFFER_SIZE / 1024) / read_time);

    free(buffer); // 释放缓冲区
}

int main() {
    // 初始化 ThreadX 和文件系统
    // ...

    test_sd_card_speed(); // 测试 TF 卡速度

    return 0;
}
/*

1:准备测试环境：
    确保你的 ThreadX 系统能够访问 TF 卡，并且已经正确挂载。
    确保你有适当的文件系统（如 FATFS）来与 TF 卡进行交互。
2:编写测试代码：
    创建一个测试程序，执行以下操作：
        记录开始时间。
        写入一定大小的数据到 TF 卡。
        记录结束时间。
        计算写入时间并计算写入速度。
        读取刚刚写入的数据。
        记录读取时间并计算读取速度。
以下是一个简单的示例代码，展示如何在 ThreadX 中测试 TF 卡的读写速度：
*/